package com.wwj.my_ummary.util.codegeneratorutlis;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空，则返回空字符串。
 * 例如：HELLO_WORLD->HelloWorld
 * 转换前的下划线大写方式命名的字符串
 *  转换后的驼峰式命名的字符串
 */
public class CamelName {


    public String convertColumnNameToPropertyName(String columnName) {
        StringBuilder result = new StringBuilder();
        // 快速检查
        if (columnName == null || columnName.isEmpty()) {
            // 没必要转换
            return "";
        } else if (!columnName.contains("_")) {
            // 不含下划线，仅将首字母小写
            return columnName.substring(0, 1).toLowerCase() + columnName.substring(1);
        }
        // 用下划线将原始字符串分割
        String[] camelss = columnName.split("_");

        //数组转集合
        List<String> list = new ArrayList<>(Arrays.asList(camelss));
        //业务需求去点下标为0的
        list.remove(0);


        for (String camel : list) {
            // 跳过原始字符串中开头、结尾的下换线或双重下划线
            if (camel.isEmpty()) {
                continue;
            }
            // 处理真正的驼峰片段
            if (result.length() == 0) {
                // 第一个驼峰片段，全部字母都小写
                result.append(camel.toLowerCase());
            } else {
                // 其他的驼峰片段，首字母大写
                result.append(camel.substring(0, 1).toUpperCase());
                result.append(camel.substring(1).toLowerCase());
            }
        }
        return result.toString();
    }
}